// 校验输出的规则

const validators = {
  text: {
    validate: (v) => v.length <= 40,
    msg: '参数名称长度为1-40个字符',
  },
  uint: {
    regex: /^\d+$/,
    msg: '参数值只能uint类型',
  },
  int: {
    regex: /^-?\d+$/,
    msg: '参数值只能int类型',
  },
  double: {
    regex: /^-?\d+(\.\d+)?$/,
    msg: '参数值只能为duoble类型',
  },
  ip: {
    regex: /^(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}$/,
    msg: '请输入正确的ip地址 例如: 192.168.3.22',
  },
  en: {
    regex: /^[A-Za-z]+$/,
    msg: '请输入纯英文',
  },
  enNum: {
    regex: /^[A-Za-z0-9-]+$/,
    msg: '请输入正确的参数,纯数字和英文组合',
  },
  'en-Num': {
    regex: /^[A-Z0-9-]+$/,
    msg: '请输入正确的参数,数字和英文组合以及横杠',
  },
  deg: {
    validate: (v) => {
      const regex = /^\d+(\.\d{1,2})?$/
      const num = parseFloat(v)
      return regex.test(v) && num >= -360 && num <= 360
    },
    msg: '度数范围在-360~360之间 且最多保留两位小数',
  },
  mac: {
    regex: /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/,
    msg: '请输入正确的MAC地址 例如: 00:00:00:00:00:00',
  },
}

export const regInputValue = (value, type) => {
  if (!value || value.length <= 0) {
    return {
      status: false,
      msg: '参数值不能为空',
    }
  }

  const rule = validators[type]
  if (!rule) return { status: true } // 不存在规则就认为通过

  let isValid = true
  if (rule.regex) {
    isValid = rule.regex.test(value)
  } else if (rule.validate) {
    isValid = rule.validate(value)
  }

  if (!isValid) {
    return {
      status: false,
      msg: rule.msg,
    }
  }

  return true
}
